import os
from openai import OpenAI

client = OpenAI(
    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx",
    # 新加坡和北京地域的API Key不同。获取API Key：https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    api_key = "sk-c4b74c70f0314100a80207d8767a887e",
    # 以下为新加坡地域base_url，若使用北京地域的模型，需将base_url替换为：https://dashscope.aliyuncs.com/compatible-mode/v1
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    # 此处以qwen-plus为例，可按需更换模型名称。模型列表：https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "你是谁？"},
    ],
    # Qwen3模型通过enable_thinking参数控制思考过程（开源版默认True，商业版默认False）
    # 使用Qwen3开源版模型时，若未启用流式输出，请将下行取消注释，否则会报错
    # extra_body={"enable_thinking": False},
)

# 方式1：直接获取回复内容
print("=== 模型回复 ===")
print(completion.choices[0].message.content)

print("\n=== 详细信息 ===")
print(f"模型: {completion.model}")
print(f"回复ID: {completion.id}")
print(f"输入token数: {completion.usage.prompt_tokens}")
print(f"输出token数: {completion.usage.completion_tokens}")
print(f"总token数: {completion.usage.total_tokens}")
print(f"停止原因: {completion.choices[0].finish_reason}")

# 方式2：格式化JSON输出
import json
print("\n=== 完整JSON响应 ===")
print(json.dumps(completion.model_dump(), indent=2, ensure_ascii=False))

# 定义大模型的提示词模板(prompt template)
prompt = f"""
分析用户输入，判断意图类型：
- 如果是查询天气、气温、气象相关，返回"weather"
- 如果是查询知识、定义、介绍、是什么，返回"baike" 
- 其他情况返回"Unknown"
只返回类型名称，不要解释。
用户输入：{"我想知道大连海事大学的天气"}
"""
# 调用大模型（通义千问-push）
response = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": f"{prompt}"},
    ],
)

print(response)
print(response.choices[0].message.content)